/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.carrito.jsf.bean;

import com.carrito.jsf.bo.ClienteImplBO;
import com.carrito.jsf.persistence.Ciudad;
import java.util.List;
import javax.annotation.PostConstruct;
import org.primefaces.context.RequestContext;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author oscarc
 */
public class BeanCliente {

    private Integer codigo;
    private String nombre;
    private String direccion;
    private String documento;
    private String telefono;
    private String celular;
    private String email;
    private Ciudad ciudad = new Ciudad();
    private Integer tipo;
    private Integer identificador;
    private ClienteImplBO clienteBO;
    private List<BeanCliente> lista;
    private List<BeanCliente> clientesFiltro;

    public BeanCliente() {
    }

    @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
    public String insert() {
        getClienteBO().insert(this);
        emitirMensaje(0);
        volverConsulta();
        return "";
    }

    @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
    public String delete() {
        getClienteBO().delete(this);
        return "";
    }

    @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
    public String update() {
        getClienteBO().update(this);
        getAll();
        return "";
    }

    @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
    @PostConstruct
    public void getAll() {
        setLista(getClienteBO().getAll());
    }

    private void emitirMensaje(int parametro) {

        String resultado = "suceso";
        if (parametro == 1) {
            resultado = "fallo";
        }

        RequestContext.getCurrentInstance().addCallbackParam(resultado, true);
    }

    public String adicionarLivro() {
        return "cliente";
    }

    public String volverConsulta() {
        return "clienteConsu";

    }

    public String consultarCiudad() {
        return "clienteConsu";

    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getDocumento() {
        return documento;
    }

    public void setDocumento(String documento) {
        this.documento = documento;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getTipo() {
        return tipo;
    }

    public void setTipo(Integer tipo) {
        this.tipo = tipo;
    }

    public Integer getIdentificador() {
        return identificador;
    }

    public void setIdentificador(Integer identificador) {
        this.identificador = identificador;
    }

    public ClienteImplBO getClienteBO() {
        return clienteBO;
    }

    public void setClienteBO(ClienteImplBO clienteBO) {
        this.clienteBO = clienteBO;
    }

    public List<BeanCliente> getLista() {
        return lista;
    }

    public void setLista(List<BeanCliente> lista) {
        this.lista = lista;
    }

    /**
     * @return the clientesFiltro
     */
    public List<BeanCliente> getClientesFiltro() {
        return clientesFiltro;
    }

    /**
     * @param clientesFiltro the clientesFiltro to set
     */
    public void setClientesFiltro(List<BeanCliente> clientesFiltro) {
        this.clientesFiltro = clientesFiltro;
    }

    /**
     * @return the ciudad
     */
    public Ciudad getCiudad() {
        return ciudad;
    }

    /**
     * @param ciudad the ciudad to set
     */
    public void setCiudad(Ciudad ciudad) {
        this.ciudad = ciudad;
    }
    
    
}
